package me.trytofeel.controller;

import me.trytofeel.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

@Controller
@ResponseBody // 这个注解，声明只是返回数据体本身，写在类上，对所有方法生效
@RequestMapping("/user") // 类的上方，写@RequestMapping相当于给url加了一层目录 => localhost/user/XXXXXX
public class UserController {
    // controller 以前只是去依赖service干活，现在在MVC模式下，多了一个绑定网址的功能

    // 1.页面跳转
    // 如何让这个方法绑定一个url地址，通过@RequestMapping("/请求内容")
    // 浏览器向服务器发送的是请求
    @RequestMapping("/t1") //  http://localhost:80/t1 | 当浏览器发送此请求的时候调用这个方法
    public String testA() {
        return "index.jsp"; // 如果直接返回字符串，这个字符串代表的是一个视图页面
    }

    // 2.回写数据，结合@ResponseBody(掌握)
    // 此时这个方法，只是想单纯返回字符串本身，而不是它代表的页面，要加一个注解
    @RequestMapping(value = "t2", produces = "text/html;charset=utf-8") // 请求绑定的时候，指定编码
    public String t2() {
        return "疯狂KFC给我打钱!"; // 响应的数据，中文会乱码，需要指定编码
    }

    // 直接回写JSON格式字符串
    @RequestMapping("getUser")
    public User getUser() {
        // 结合jackson，导坐标后要在SpringMvcConfig 添加@EnableWebMvc注解
        return new User(1, "张三"); // @EnableWebMvc 会自动将对象转换成JSON
    }

    // 用集合返回一堆User
    @RequestMapping("getUserList") // 启用@EnableWebMvc之后还会自动处理编码问题
    public List<User> getUserList() {
        ArrayList<User> users = new ArrayList<User>();
        users.add(new User(1, "张三"));
        users.add(new User(2, "张三"));
        users.add(new User(3, "张三"));
        users.add(new User(4, "张三"));
        users.add(new User(5, "张三"));
        return users;
    }

    // 用集合返回一堆User
    @RequestMapping("getUserById") // 启用@EnableWebMvc之后还会自动处理编码问题
    public User getUserById(int id) { // 方法的形参，就是url的请求参数，要求两个参数名称一致 | .../user/getUserListById?id=XXX
        ArrayList<User> users1 = new ArrayList<User>();
        users1.add(new User(1, "张三"));
        users1.add(new User(2, "张三"));
        users1.add(new User(3, "张三"));
        users1.add(new User(4, "张三"));
        users1.add(new User(5, "张三"));
        return users1.get(id - 1);
    }

}
